home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 May: Tool Chest / Developer CD Series Tool Chest (Apple Computer)(May 1999).iso / Tool Chest / Devices / CD-ROM / How to Detect a CD / Not used in this example / CheckEjectability.c next >
Encoding:
C/C++ Source or Header  |  1995-10-18  |  775 b   |  32 lines  |  [TEXT/MPS ]

  1. #include <Files.h>
  2. #include <Devices.h>
  3. #include "CheckEjectability.h"
  4.  
  5.  
  6. ExtraDriveFlags* GetExtraDriveFlags(short drive)
  7. {
  8.     ExtraDriveFlags*    beforeQEntry = nil;
  9.     DrvQElPtr            qEntry;
  10.     
  11.     if (drive != 0)                            // it’s zero if already ejected so 
  12.                                             // we’re obviously not ejectable
  13.     {
  14.         for ( qEntry = ((DrvQElPtr) (GetDrvQHdr()->qHead)); 
  15.                 qEntry; 
  16.                 qEntry = (DrvQElPtr) qEntry->qLink )
  17.             if (drive == qEntry->dQDrive)    // found our drive queue entry
  18.             {
  19.                 beforeQEntry = ((ExtraDriveFlags*) qEntry) - 1;
  20.                 break;
  21.             }
  22.     }
  23.     
  24.     return beforeQEntry;
  25. }
  26.  
  27. Boolean DriveIsEjectable(const short drive)
  28. {
  29.     ExtraDriveFlags* flags = GetExtraDriveFlags(drive);                // find drive queue entry
  30.     return flags ? (flags->diskStatus & 0xF) != 0x8 : false;    // ***this is slimy
  31. }
  32.